macos: disconnect frame clock when destroying surface
authorChristian Hergert <chergert@redhat.com>
Wed, 2 Dec 2020 19:35:02 +0000 (11:35 -0800)
committerChristian Hergert <chergert@redhat.com>
Wed, 2 Dec 2020 19:35:02 +0000 (11:35 -0800)
gdk/macos/gdkmacossurface.c

index 2360e1c476fd4a1ab6b19300b756c985aaeca19b..5d6f2e1aaa4574011801377ef99371619018e9b2 100644 (file)
@@ -361,6 +361,17 @@ gdk_macos_surface_destroy (GdkSurface *surface,
 
   GdkMacosSurface *self = (GdkMacosSurface *)surface;
   GdkMacosWindow *window = g_steal_pointer (&self->window);
+  GdkFrameClock *frame_clock;
+
+  if ((frame_clock = gdk_surface_get_frame_clock (GDK_SURFACE (self))))
+    {
+      g_signal_handlers_disconnect_by_func (frame_clock,
+                                            G_CALLBACK (gdk_macos_surface_before_paint),
+                                            self);
+      g_signal_handlers_disconnect_by_func (frame_clock,
+                                            G_CALLBACK (gdk_macos_surface_before_paint),
+                                            self);
+    }
 
   g_clear_pointer (&self->title, g_free);